class Solution
{
public:
    ListNode* detectCycle(ListNode* head)
    {
        unordered_set<ListNode*> visited;
        while (head != nullptr)
        {
            if (visited.count(head))
            {
                return head;
            }
            visited.insert(head);
            head = head->next;
        }
        return nullptr;
    }
};
